#pragma once

#include <imgui/EditApp.h>
#include <faker/basic/pch.h>


#include <faker/scene/Scene.h>
#include <faker/engine/Generator.h>
#include <faker/engine/System.h>
#include <faker/engine/ui/Layout.h>


using BaseApp = EditApp;

namespace Faker
{
    namespace Engine
    {

        struct App : public BaseApp
        {
            Faker::Scene m_Scene;

            Faker::Engine::Generator m_EngineGenerator;
            Faker::Engine::System m_EngineSystem;
            // Faker::Engine::UI m_EngineEditor;
            Faker::Engine::UI::Layout m_EngineLayout;

            bool Create(const GLFWConfig &config) override;
            void OnFrameRender() override;
            void OnEdit() override;
            void OnFrameBufferSize(int width, int height) override;

        private:
            Gut::RenderTarget m_RenderTarget;
                        
        };
    };
};